package modell;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ViserKontroller implements Runnable{

	public static int REFERSH_TIME = 50;

	protected int tall;

	private List<TikkLytter> lyttere;
	private int forrigeTall;
	private Thread trad;

	public ViserKontroller(int start){
		lyttere = Collections.synchronizedList(new ArrayList<TikkLytter>());
		tall = start;
		forrigeTall = 0;
		trad = new Thread(this);
		trad.start();
	}

	@Override
	public void run() {
		while (true){
			if (forrigeTall != tall){
				forrigeTall = tall;
				createEvent();
			}
			try {
				Thread.sleep(REFERSH_TIME);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public void leggTilLytter(TikkLytter lytter){
		lyttere.add(lytter);
	}

	public void fjernLytter(TikkLytter lytter){
		lyttere.remove(lytter);
	}

	public void createEvent(){
		TikkEvent tikk = new TikkEvent(this);
		for (TikkLytter lytter : lyttere)
			lytter.klokkeTikk(tikk);
	}

	@Override
	public String toString(){
		return (tall < 10) ? "0"+tall+"" : ""+tall;
	}
}
